// @ts-nocheck
require('module-alias/register')
const { app, shell, BrowserWindow, ipcMain } = require('electron');
const { join, resolve } = require('path')

const Activity = require('@db/entity/ActivityEntity');

const logger = require('@utils/logger');
const gs = require('@utils/globalStore.js');
const { loadConfiguration,  showInitializationDialog } = require('@utils/configValidator');

const { createMainWindow } = require('@presenter/mainWindow');  // 绘制主窗口

app.disableHardwareAcceleration() // 禁用 GPU 加速

// 在 app.whenReady() 前添加
process.on('unhandledRejection', (err) => {
    logger.error('未处理的Promise拒绝:', err.stack || err.message);
});

// 检查Node.js版本
if (process.versions.node.split('.')[0] < 10) {
    logger.error('需要Node.js 10.0.0或更高版本');
    app.exit(1);
}

app.whenReady().then(() => {
    // electronApp.setAppUserModelId('com.electron');
    logger.log('[+00000]window is ready...');

    (async () => {
        try {
            const value = await loadConfiguration('DATABASE', 'path');
            logger.info(`[+10009]The value for DATABASE.path is::${value}`);
            createMainWindow();
        } catch (error) {
            logger.error('[+10008]初始化配置失败:', error.stack || error.message); // 输出完整错误栈
            await showInitializationDialog(); // 确保等待初始化完成
        }
    })();
    
    const result = (new Activity()).batchUpdateState();   
    console.log('batch update result::', result);

}).catch((error) => {
    logger.error('应用准备过程中出现错误:', error.stack || error.message); // 修复空错误对象
});



//////////// 注掉上面代码，打开下面代码注释用来测试打包的 bundle.js ///////////////////
//////////// 打包的顺序： ///////////////////
//////////// ⑴：把 上面的 module-alias 这一行注释掉 ///////////////////
//////////// ⑵：执行 package.json 中的 copyToWebpack ///////////////////
//////////// ⑶：检查 webpack 打包项目中的 webpack.config.js 与本项目中的别名配置是否一致 ///////////////////
//////////// ⑷：执行 webpack 打包、复制命令 ///////////////////
//////////// ⑸：把本文件 main.js 中上面部分注释掉，打开下面的注释 ///////////////////
//////////// ⑹：执行本项目的运行测试，看下是否正常运行 ///////////////////
//////////// ⑺：如果运行正常，确认前端已经打包过了 ///////////////////
// require('./bundle.js')